package edu.unice.simul.util;

/**
 * Modelise un point dans la simulation. Rappellons que nous manipulons
 * uniquement des coordonnées en nombre reel dans cette classe. Elle a deux
 * constructeurs, un qui prend en paramètre deux double et un contructeur de
 * copie. Le construteur sans parametre initialise les attributs avec des zeros.
 * 
 * @author joel
 * 
 */
public class DimDouble {

	@Override
	public String toString() {
		return "DimDouble [x=" + x + ", y=" + y + "]";
	}

	private double x, y;

	public DimDouble(double x, double y) {
		this.setX(x);
		this.setY(y);
	}

	public DimDouble() {
		this(0.0, 0.0);
	}

	public DimDouble(DimDouble d) {
		this.x = d.getX();
		this.y = d.getY();
	}

	/**
	 * Renvoie l'abcisse de l'objet courant
	 */
	public double getX() {
		return x;
	}

	/**
	 * Met à jour l'abcisse de l'objet courant
	 */
	public void setX(double x) {
		this.x = x;
	}

	/**
	 * Renvoie l'ordonnées de l'objet courant
	 */
	public double getY() {
		return y;
	}

	/**
	 * Met à jour l'abcisse de l'objet courant
	 */
	public void setY(double y) {
		this.y = y;
	}

	/**
	 * Calcule le produit scalaire de l'objet courant avec l'objet point passé en
	 * paramèttre. Le resultat est un nombre reel.
	 */
	public double produitScalaire(DimDouble d) {
		double ps;
		ps = this.getX() * d.getX() + this.getY() * d.getY();
		return ps;
	}

	/**
	 * Calcul du produit vectoriel entre DimDouble
	 */
	public double produitVectoriel(DimDouble d) {
		double pv;
		pv = this.getX() * d.getY() - this.getY() * d.getX();
		return pv;
	}

}
